// middleware/formatDate.js
const dayjs = require('dayjs');

function formatDates(req, res, next) {
  const originalJson = res.json;
  res.json = function (data) {
    if (data) {
      data = deepFormatDates(data); // 递归格式化所有日期字段
    }
    originalJson.call(this, data);
  };
  next();
}

// 递归检查并格式化对象/数组中的日期字段
function deepFormatDates(obj) {
  if (Array.isArray(obj)) {
    return obj.map(item => deepFormatDates(item));
  } else if (obj && typeof obj === 'object') {
    for (const key in obj) {
      if (obj[key] instanceof Date) {
        obj[key] = dayjs(obj[key]).format('YYYY-MM-DD HH:mm:ss'); // 统一格式
      } else if (typeof obj[key] === 'object') {
        obj[key] = deepFormatDates(obj[key]); // 递归处理嵌套对象
      }
    }
  }
  return obj;
}

module.exports = {formatDates};